package com.apstest.core.domain;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class TEST2 {
    public static void main(String[] args) {
        try {
            // 解决中文支持
            BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

            // 1. 创建Document对象
            Document document = new Document(PageSize.A4, 36, 36, 36, 36);

            // 2. 创建PdfWriter实例
            PdfWriter.getInstance(document, new FileOutputStream("TableExport123.pdf"));
            document.open();

            // 3. 添加标题（使用中文字体）
            Font titleFont = new Font(baseFont, 16, Font.BOLD, BaseColor.DARK_GRAY);
            Paragraph title = new Paragraph("员工信息表", titleFont);
            title.setAlignment(Element.ALIGN_CENTER);
            title.setSpacingAfter(20f);
            document.add(title);

            // 4. 创建表格（4列）
            PdfPTable table = new PdfPTable(4);
            table.setWidthPercentage(100);
            table.setSpacingBefore(10f);
            table.setSpacingAfter(20f);

            // 5. 设置列宽
            float[] columnWidths = {1f, 2f, 2f, 3f};
            table.setWidths(columnWidths);

            // 6. 添加表头（使用传入的字体）
            Font headerFont = new Font(baseFont, 12, Font.BOLD, BaseColor.WHITE);
            addTableHeader(table, headerFont, "ID", "姓名", "部门", "邮箱");

            // 7. 添加表格数据
            Font dataFont = new Font(baseFont, 10);
            addRow(table, dataFont, "101", "张三", "技术部", "zhangsan@example.com","123123123123123123");
            addRow(table, dataFont, "102", "李四", "市场部", "lisi@example.com");
            addRow(table, dataFont, "103", "王五", "财务部", "wangwu@example.com");

            // 8. 将表格添加到文档
            document.add(table);

            document.close();
            System.out.println("PDF表格生成成功!");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 修正后的添加表头方法（使用传入的字体）
    private static void addTableHeader(PdfPTable table, Font font, String... headers) {
        for (String header : headers) {
            PdfPCell cell = new PdfPCell();
            cell.setBackgroundColor(BaseColor.GRAY);
            cell.setBorderWidth(1.5f);
            cell.setPhrase(new Phrase(header, font)); // 使用传入的字体
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
            cell.setPadding(8);
            table.addCell(cell);
        }
    }

    // 添加数据行方法（添加字体参数）
    private static void addRow(PdfPTable table, Font font, String... data) {
        System.out.println(data.length);
        for (String item : data) {
            PdfPCell cell = new PdfPCell(new Phrase(item, font)); // 使用传入的字体
            cell.setBorderWidth(1f);
            cell.setPadding(5);
            table.addCell(cell);
        }
    }
}
